#ifndef __LIST_H__
#define __LIST_H__

typedef struct LIST * list_h ; 

list_h list_new(unsigned data_size) ;
void list_delete(list_h *list) ;

void list_push_front(list_h list, unsigned char *val) ;
void list_push_back(list_h list, unsigned char *val) ;

void list_pop_front(list_h list) ;
void list_pop_back(list_h list) ;

void list_get(list_h list, unsigned index) ;
void list_remove(list_h list, unsigned index) ;

unsigned list_size(list_h list) ;
int list_empty(list_h list) ;

#endif
